#include <stdio.h>


#if 0
 int myAdd(int num1, int num2)
{
    int num3 = num1 + num2;
    return num3;
}

#endif

int swapVal(int  *num1, int *num2)//形参
{
    
    printf("未交换前：\n");
    printf("num:%d,\tnum2:%d\n", *num1 , *num2);

    printf("交换后：\n");
    int  temp = *num1 ;
    *num1 = *num2 ;
    *num2 = temp ;
    printf("num:%d,\tnum2:%d\n", *num1 ,*num2);

}



int swapVa2(int  num1, int num2)//形参
{
    
    printf("未交换前：\n");
    printf("num:%d,\tnum2:%d\n", num1 , num2);

    printf("交换后：\n");
    int  temp = num1 ;
    num1 = num2 ;
    num2 = temp ;
  //  printf("num:%d,\tnum2:%d\n", num1 ,num2);//此处如果不用指针，此处的num1和num2值就没办法返回主函数中，因为地址不一样

}

int main()
{
    //所有函数都有（），除了sizeof,它是运算符
    /* 函数三要素*/
    //1.函数名
    //2.函数参数:形参
    //3.函数返回值
    /*传入参数：
           对于整数来说，没有指针的就是传入参数(值传递)
           对于字符来说，没有const限定的一定是传入参数
      传出参数：相反
      对于整数来说，没有指针的就是传出参数
               
               */
    int val1 =100;
    int val2 = 200;
    printf("hello world\n");


/*
    int result = myAdd(val1, val2);
    printf("hello world\n");
     printf("result:%d\n",result);
     */

    printf("val1的地址:%p\n", &val1);
    int res1 = swapVa2(val1 , val2);  //调用：实参--地址不一样，值可以传过去却没办法返回来
    printf("res1:%d,\t val1:%d.\t val2:%d\n", res1 , val1 , val2);


    int res = swapVal(&val1 , &val2);  //调用：实参
    printf("res:%d,\t val1:%d.\t val2:%d\n", res , val1 , val2);

    
    return 0;
}




